package com.eedi.framework.event.dal.dataobject;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.eedi.framework.common.event.enums.SysEventConsumeStatusEnum;
import com.eedi.framework.common.event.type.EediEventTypeEnum;
import com.eedi.framework.mybatis.core.handler.PgJsonbHandler;
import com.eedi.framework.tenant.core.db.TenantBaseDO;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.ToString;

/**
 * 事件消费表
 *
 * @author 永聚长青源码
 */
@TableName("sys_event_consumer")
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
public class SysEventConsumerDO extends TenantBaseDO {

    /**
     * ID,采用ID生成策略生成
     */
    @TableId(type = IdType.ASSIGN_UUID)
    String sysEventConsumerId;
    /**
     * 事件业务名称
     */
    String sysEventBizName;

    /**
     * 事件类型
     */
    EediEventTypeEnum sysEventType;
    /**
     * 事件点Code
     */
    String sysEventPointCode;
    /**
     * 事件点Desc
     */
    String sysEventPointDesc;
    /**
     * 关注者名称
     */
    String sysEventObsName;
    /**
     * 事件消息
     */
    @TableField(typeHandler = PgJsonbHandler.class)
    String sysEventMsg;
    /**
     * 事件消息类路径
     */
    String sysEventMsgPath;
    /**
     * 消费状态
     */
    SysEventConsumeStatusEnum sysEventConsumeStatus;
    /**
     * 消费完成信息
     */
    String sysEventConsumeMsg;

    /**
     * 事件关注者处理方法
     */
    String sysEventObsFunction;

    /**
     * 事件方法
     */
    String sysEventFunction;

    /**
     * 机构ID
     */
    String orgInfoId;
}
